1. The Field of the Invention
The present invention relates to the field of database management systems. In particular, the present invention relates to methods and systems for performing reliable asynchronous notification of high-level document operations in a database.
2. Background and Relevant Art
With the development of computer networks and the Internet, anyone who has access to an Internet capable computer may access information from all over the world. The present era has even been termed the “information age” due to the widespread abundance of information. Although this abundance of information is useful, individuals may easily be overwhelmed with information to the point where it is difficult to filter out relevant information from irrelevant information.
Database management systems are systems that manage collections of data (i.e., databases) so as to allow individuals, devices and applications to easily access, manage, and update information. Thus, database management systems provide a significant contribution to the information age by allowing for the efficient use of information.
Conventional database management systems such as the database management system 100 shown in FIG. 1 include an underlying database 110 that contains organized data in the form of a number of tables such as table “A”, table “B”, table “C” and table “D”. Each table contains entries that associate documents with properties of the documents. For example, one table may contain a count of the number of files within given folders, another may list the memory size of given files, yet another may list other properties associated with given files, or folders. For each document, there is typically more than one table that may associated with the document by, for example, describing properties of the document.
A document (e.g., document 1, 2, 3 and 4 in FIG. 1) is an identifiable entity from the viewpoint of applications that use the database management system. For example, a folder or an item such as an electronic mail message within the folder may be considered to be a document since they are identified as entities from the viewpoint of the application that uses the database management system. For example, in the context of electronic messaging, an application may present folders such as “in-boxes” and “out-boxes” to a user with corresponding electronic mail messages in the folders. These folders and electronic mail messages are “documents” from the viewpoint of the application. Similarly, files and directories within a file system may also be documents from the viewpoint of the application that uses the database management system. The tables within the underlying database are not considered to be documents since they are identified internal to the database management system, and not at the higher level of the application that uses the database management system.
The database application 120 generates high-level document commands (e.g., high-level command 121) that relate to operations to be performed on a document. Examples of such document commands might include operations such as, for example, move folder, move message, delete message, copy folder, copy file, and so forth.
Each of these high-level document commands is received by the database engine 130 which implements the high-level document commands by executing a number of object commands that result in objects such as tables being updated. Typically, the database engine would use the disk access module 140 (e.g., a disk driver) of an operating system to produce the physical control signals necessary to read and write the appropriate sectors in the disk, each object comprising one or more possibly discontiguous sectors on the disk.
It is often desirable for one client application to receive notification when a high-level document command meeting certain criteria has been implemented by another client application. For example, if a client application is viewing all electronic messages within a folder, notification when another client application adds a message to the folder will allow the client application to refresh the display.
FIG. 2 illustrates a flowchart of a conventional method 200 for performing notifications that certain high-level document commands have been implemented in the database. When receiving a given high-level document command, the database management system first implements the corresponding high-level document command in the database (act 201). Once implemented, the database management system determines which applications have subscribed to be notified when the given high-level document command is implemented (act 202). The database management system then dispatches a notification that the high-level document command has been implemented (act 203).
The vast majority of the time, when a high-level document command having certain criteria is issued, the subscribing client applications are properly notified of the high-level document command and thus can respond appropriately. However, sometimes computer systems become inoperative due to system failures, corruption, power loss, or the like. In such cases, there is a possibility that the high-level document command is implemented in the database, but that the subscribing client application never receives notification of the implementation. For example, the client application may become inoperative and thus become unable to receive and interpret a notification that a certain high-level document command has been implemented. Also, the database management system itself may become inoperative so that although the command has been implemented, no notification was ever dispatched.
Thus, conventional system contain no guarantee that the proper notifications of a high-level document command will always be dispatched or received if a high-level document command is implemented. Therefore, what are desired are methods and systems for improving accuracy and reliability in notifying client applications that certain high-level document commands have been implemented in a database.